package com.asa.ui.spirit;

import java.awt.Point;

public class Circle {

	public int x,y;
	private int r;
	public int vx,vy;
	public boolean isFilled=false;//是否填充

	
	public Circle(int x, int y, int r, int vx, int vy) {
		super();
		this.x = x;
		this.y = y;
		this.r = r;
		this.vx = vx;
		this.vy = vy;
	}
	public int getR() {
		return r;
	}
	
	public void move(int minx,int miny,int maxx,int maxy,Circle[] json,int a) {
		x += vx;
		y += vy;
		checkCollision(minx, miny, maxx, maxy,json,a);
	}
	/**
	 * 边界碰撞检测
	 */
	private void checkCollision(int minx,int miny,int maxx,int maxy,Circle[] json,int a) {
		
		if (x-r<minx) {
			x = r;
			vx = -vx;
		}
		if (x+r>=maxx) {
			x= maxx-r;
			vx = -vx;
		}
		
		if (y-r<miny) {
			y = r;
			vy = -vy;
		}
		
		if (y+r>=maxy) {
			y = maxy -r;
			vy = -vy;
		}
//		crash(json, a);
	}
	
	private void crash(Circle[] json,int a) {
		
		int ball1x = json[a].x;
        int ball1y = json[a].y;
        
        
        for(int i= 0;i<json.length;i++){
            if(i!=a){
            	int ball2x = json[i].x;
            	int ball2y = json[i].y;
                //圆心距离的平方
            	int len = (ball1x-ball2x)*(ball1x-ball2x)+(ball1y-ball2y)*(ball1y-ball2y);
                if(len <= 4*r*r){
                //小球位置的判断，发生碰撞反应
                	vx = -vx;
        			vy = -vy;

//                    if(ball1x >ball2x){
//                        if(ball1y > ball2y){
//                            json[a].vx=-json[a].vx;
//                            json[a].vy=-json[a].vy;
//                        }else if(ball1y < ball2y){
//                            json[a].vx=-json[a].vx;
//                            json[a].vy=-json[a].vy;
//                        }else{
//                            json[a].vx=-json[a].vx;
//                        }
//                    }else if(ball1x < ball2x){
//                        if(ball1y > ball2y){
////                            json[a].vx=0;
////                            json[a].vy=0;
//                        }else if(ball1y < ball2y){
////                            json[a].vx=0;
//                            json[a].vy=-json[a].vy;
//                        }else{
////                            json[a].vx=0;
//                        }
//                    }else{
//                        if(ball1y > ball2y){
//                            json[a].vy=-json[a].vy;
//                        }else if(ball1y < ball2y){
////                            json[a].vy=0
//                        }
//                    }
                }
            }

        }

		
		
	}

	
	//判断鼠标点击到圆心的距离
		public boolean contains(Point p){
			return Math.pow(x-p.x, 2)+Math.pow(y-p.y, 2)<=Math.pow(r, 2);
		}
	
	
	
	
}
